﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace V82.ОбщиеМодули
{
	public partial class СведенияОДоходахФизлицПереопределяемый
	{
		////////////////////////////////////////////////////////////////////////////////
		// Вспомогательные процедуры, функции
		////////////////////////////////////////////////////////////////////////////////
		// Процедуры, функции объекта

		public void ДополнитьСтруктуруПечатныхФорм(/*СтруктураПечатныхФорм*/)
		{
			/*// В этой конфигурации дополнительных действий не предусмотрено
*/
		}
		//ДополнитьСтруктуруПечатныхФорм()

		public void ЗаполнитьЗапросЭтоНеЮрЛицо(/*Запрос, ЭтотОбъект*/)
		{
			if(true/*ЭтотОбъект.НалоговыйПериод > 2007*/)
			{
				/*Запрос.Текст = 
		"ВЫБРАТЬ РАЗЛИЧНЫЕ
		|	НДФЛСведенияОДоходах.ФизЛицо,
		|	ВЫБОР
		|		КОГДА Гражданство.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыНалогоплательщиковПоНДФЛ.НеРезидент)
		|			ТОГДА ВЫБОР
		|					КОГДА НДФЛСведенияОДоходах.КодДохода = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.Код1010)
		|						ТОГДА ЗНАЧЕНИЕ(Перечисление.НДФЛСтавки.Ставка15)
		|					ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.НДФЛСтавки.Ставка30)
		|				КОНЕЦ
		|		КОГДА НДФЛСведенияОДоходах.КодДохода.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка13)
		|			ТОГДА ЗНАЧЕНИЕ(Перечисление.НДФЛСтавки.Ставка13)
		|		КОГДА НДФЛСведенияОДоходах.КодДохода.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка09)
		|			ТОГДА ЗНАЧЕНИЕ(Перечисление.НДФЛСтавки.Ставка09)
		|		КОГДА НДФЛСведенияОДоходах.КодДохода.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка35)
		|			ТОГДА ЗНАЧЕНИЕ(Перечисление.НДФЛСтавки.Ставка35)
		|		ИНАЧЕ """"
		|	КОНЕЦ КАК Ставка
		|ИЗ
		|	РегистрНакопления.НДФЛСведенияОДоходах КАК НДФЛСведенияОДоходах
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусФизЛицКакНалогоплательщиковНДФЛ.СрезПоследних(&КонецНП, ) КАК Гражданство
		|		ПО (Гражданство.ФизЛицо = НДФЛСведенияОДоходах.ФизЛицо)
		|ГДЕ
		|	НДФЛСведенияОДоходах.Организация = &Организация
		|	И ГОД(НДФЛСведенияОДоходах.Период) = &ГодНП
		|	И НДФЛСведенияОДоходах.ПериодРегистрации < &ДатаПодачиСведений
		|
		|УПОРЯДОЧИТЬ ПО
		|	НДФЛСведенияОДоходах.ФизЛицо.Наименование";*/
			}
		}

		public void ЗаполнитьЗапросАвтозаполнения(/*Запрос, ЭтотОбъект*/)
		{
			if(true/*ЭтотОбъект.НалоговыйПериод > 2007*/)
			{
				/*Запрос.Текст = 
		"ВЫБРАТЬ РАЗЛИЧНЫЕ
		|	НДФЛСведенияОДоходах.ФизЛицо,
		|	ВЫБОР
		|		КОГДА Гражданство.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыНалогоплательщиковПоНДФЛ.НеРезидент)
		|			ТОГДА ВЫБОР
		|					КОГДА НДФЛСведенияОДоходах.КодДохода = ЗНАЧЕНИЕ(Справочник.ДоходыНДФЛ.Код1010)
		|						ТОГДА ЗНАЧЕНИЕ(Перечисление.НДФЛСтавки.Ставка15)
		|					ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.НДФЛСтавки.Ставка30)
		|				КОНЕЦ
		|		КОГДА НДФЛСведенияОДоходах.КодДохода.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка13)
		|			ТОГДА ЗНАЧЕНИЕ(Перечисление.НДФЛСтавки.Ставка13)
		|		КОГДА НДФЛСведенияОДоходах.КодДохода.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка09)
		|			ТОГДА ЗНАЧЕНИЕ(Перечисление.НДФЛСтавки.Ставка09)
		|		КОГДА НДФЛСведенияОДоходах.КодДохода.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка35)
		|			ТОГДА ЗНАЧЕНИЕ(Перечисление.НДФЛСтавки.Ставка35)
		|		ИНАЧЕ """"
		|	КОНЕЦ КАК Ставка,
		|	ВЫБОР
		|		КОГДА НДФЛСведенияОДоходах.КодПоОКАТО <> &ПустойКодПоОКАТО
		|			ТОГДА НДФЛСведенияОДоходах.КодПоОКАТО
		|		КОГДА ЕСТЬNULL(НДФЛСведенияОДоходах.ПодразделениеОрганизации.КодПоОКАТО, &ПустойКодПоОКАТО) <> &ПустойКодПоОКАТО
		|			ТОГДА НДФЛСведенияОДоходах.ПодразделениеОрганизации.КодПоОКАТО
		|		ИНАЧЕ ЕСТЬNULL(НДФЛСведенияОДоходах.ОбособленноеПодразделение.КодПоОКАТО, &ПустойКодПоОКАТО)
		|	КОНЕЦ КАК КодПоОКАТО,
		|	ВЫБОР
		|		КОГДА НДФЛСведенияОДоходах.КПП <> &ПустойКПП
		|			ТОГДА НДФЛСведенияОДоходах.КПП
		|		КОГДА ЕСТЬNULL(НДФЛСведенияОДоходах.ПодразделениеОрганизации.КПП, &ПустойКПП) <> &ПустойКПП
		|			ТОГДА НДФЛСведенияОДоходах.ПодразделениеОрганизации.КПП
		|		ИНАЧЕ ЕСТЬNULL(НДФЛСведенияОДоходах.ОбособленноеПодразделение.КПП, &ПустойКПП)
		|	КОНЕЦ КАК КПП
		|ИЗ
		|	РегистрНакопления.НДФЛСведенияОДоходах КАК НДФЛСведенияОДоходах
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусФизЛицКакНалогоплательщиковНДФЛ.СрезПоследних(&КонецНП, ) КАК Гражданство
		|		ПО (Гражданство.ФизЛицо = НДФЛСведенияОДоходах.ФизЛицо)
		|ГДЕ
		|	НДФЛСведенияОДоходах.Организация = &Организация
		|	И ГОД(НДФЛСведенияОДоходах.Период) = &ГодНП
		|	И НДФЛСведенияОДоходах.ПериодРегистрации < &ДатаПодачиСведений
		|
		|УПОРЯДОЧИТЬ ПО
		|	НДФЛСведенияОДоходах.ФизЛицо.Наименование";*/
			}
		}
		// Возвращает налоговый период (год), начиная с которого поддерживается формирование справок по НДФЛ
		//
		// Параметры
		//  нет
		//
		// Возвращаемое значение:
		//   число
		//

		public object МинимальныйПоддерживаемыйНалоговыйПериод(/**/)
		{
			return null;
		}
		// МинимальныйПоддерживаемыйНалоговыйПериод()
		// Процедура осуществляет печать документа. Можно направить печать на
		// экран или принтер, а также распечатать необходимое количество копий.
		//
		//  Название макета печати передается в качестве параметра,
		// по переданному названию находим имя макета в соответствии.
		//
		// Параметры:
		//  НазваниеМакета - строка, название макета.
		//

		public object Печать(/*ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь, ЭтотОбъект*/)
		{
			/*// Получить экземпляр документа на печать
*/
			if(true/*ИмяМакета = "ПечатьФайла"*/)
			{
				//ЕстьОшибки = Ложь;
				if(true/*ЭтотОбъект.Проведен*/)
				{
					//ТекстФайла = РегламентированнаяОтчетность.ПолучитьТекстФайла(ЭтотОбъект,ЕстьОшибки);
				}
				if(true/*ЕстьОшибки*/)
				{
				}
				/*// Табличные документы и макеты
*/
				//Документ2НДФЛ = Новый ТабличныйДокумент;
				//ДокументРеестр = Новый ТабличныйДокумент;
				//Документ2НДФЛ.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СведенияОДоходахФизлиц_Форма2НДФЛ";
				//ДокументРеестр.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СведенияОДоходахФизлиц_Реестр";
				/*// Области реестра
*/
				//МакетРеестр = ЭтотОбъект.ПолучитьМакет("Реестр");
				//ОбластьРеестрШапка  = МакетРеестр.ПолучитьОбласть("Шапка");
				//ОбластьРеестрСтрока = МакетРеестр.ПолучитьОбласть("Строка");
				//ОбластьРеестрПодвал = МакетРеестр.ПолучитьОбласть("Подвал");
				//НалоговыйПериодГод = Формат(ЭтотОбъект.НалоговыйПериод,"ЧН=' '; ЧГ=");
				//НомерРеестра = ПроцедурыПерсонифицированногоУчета.НомерПачкиДокумента(ЭтотОбъект.Номер);
				/*// № документа
*/
				//ОбластьРеестрШапка.Параметры.Год 			= НалоговыйПериодГод;
				//ОбластьРеестрШапка.Параметры.НомерРеестра	= НомерРеестра;
				/*// Итоговые счетчики реестра
*/
				//ИтогоДоход = 0;
				//ИтогоИсчНалог = 0;
				//ИтогоУдНалог = 0;
				//ТипДанныхЭтоСтрока = ТипЗнч(ТекстФайла) = Тип("Строка");
				if(true/*Не ТипДанныхЭтоСтрока Или Найти(ТекстФайла,"@@@") = 0*/)
				{
					/*// с 2005 года
*/
					if(true/*ТипДанныхЭтоСтрока*/)
					{
						//Дерево2НДФЛ = ПроцедурыПерсонифицированногоУчета.ПреобразоватьВДеревоXML(ТекстФайла);
						if(true/*Дерево2НДФЛ = Неопределено*/)
						{
							//Отказ = Ложь;
							//ОбщегоНазначения.СообщитьОбОшибке("Не удалось разобрать файл с данными!",Отказ, ОбщегоНазначения.ПредставлениеДокументаПриПроведении(ЭтотОбъект.Ссылка));
						}
					}
					//Дерево2НДФЛ = Дерево2НДФЛ.Строки.Найти("НДФЛ2","Имя");
					if(true/*Дерево2НДФЛ = Неопределено*/)
					{
						//Отказ = Ложь;
						//ОбщегоНазначения.СообщитьОбОшибке("Не удалось разобрать файл с данными!",Отказ, ОбщегоНазначения.ПредставлениеДокументаПриПроведении(ЭтотОбъект.Ссылка));
					}
					//ВерсияФормата = ПроцедурыПерсонифицированногоУчета.ИзвлечьДанное(Дерево2НДФЛ,"ВерсФорм");
					if(true/*ВерсияФормата = ""*/)
					{
						//Отказ = Ложь;
						//ОбщегоНазначения.СообщитьОбОшибке("Не указана версия формата! Возможно, нарушена структура файла.",Отказ, ОбщегоНазначения.ПредставлениеДокументаПриПроведении(ЭтотОбъект.Ссылка));
					}
					if(true/*ВерсияФормата = "4.00001"*/)
					{
						/*// с 2006 года
*/
						//Справка = ЭтотОбъект.ПолучитьМакет("Форма2НДФЛ2006");
						if(true/*ЭтотОбъект.Ответственный.Пустая()*/)
						{
							//ОбщегоНазначения.СообщитьОбОшибке("Не указано ответственное лицо!", Отказ);
						}
						if(true/*ОбщегоНазначенияПереопределяемый.ЭтоЮрЛицо(ЭтотОбъект.Организация) И ЭтотОбъект.ДолжностьОтветственного.Пустая()*/)
						{
							//ОбщегоНазначения.СообщитьОбОшибке("Не указана должность ответственного лица!", Отказ);
						}
						//ДатаСоставления = ПроцедурыПерсонифицированногоУчета.ИзвлечьДанное(Дерево2НДФЛ,"ДатаСпр");
						//ОбластьРеестрШапка.Параметры.ДатаСоставления = ДатаСоставления;
						//Справка.Область("ДатаДок").Текст = ДатаСоставления;
						//Справка.Область("ДолжностьИсполнителя").Текст = Строка(ЭтотОбъект.ДолжностьОтветственного);
						//ИМНС = ПроцедурыПерсонифицированногоУчета.ИзвлечьДанное(Дерево2НДФЛ,"ИФНСНА");
						//ОбластьРеестрШапка.Параметры.ИМНС = ИМНС;
						//Справка.Область("ИФНС").Текст = ИМНС;
						//ОтветственныеЛица = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(ЭтотОбъект.Организация, Дата(Прав(ДатаСоставления,4),Сред(ДатаСоставления,4,2),Лев(ДатаСоставления,2)), ЭтотОбъект.Ответственный);
						//ОбластьРеестрШапка.Параметры.ГлБух = ОтветственныеЛица.ГлавныйБухгалтер;
						//ОбластьРеестрШапка.Параметры.КоличествоСправок = Дерево2НДФЛ.Строки.Количество() - 1;
						//ШапкаРеестраНеВыведена = Истина;
					}
				}
				if(true/*НЕ ЗначениеЗаполнено(ОбластьРеестрШапка.Параметры.КоличествоСправок)*/)
				{
					//РаботаСДиалогами.ВывестиПредупреждение("Не обнаружено ни одной справки о доходах!");
				}
			}
			return null;
		}
		// Печать
		////////////////////////////////////////////////////////////////////////////////
		// Процедуры, функции для работы формы документа

		public void НалоговыйПериодПриИзмененииДополнительно(/*ЭтаФорма*/)
		{
			//СведенияОДоходахФизлицДополнительный.ОпределитьДействующиеСтавкиНалога(ЭтаФорма.НалоговыйПериод, ЭтаФорма);
		}

		public void ПередОткрытиемДополнительно(/*ЭтаФорма, ДополнительныеДействия*/)
		{
			//КнопкаПодменю = ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Подменю1;
			if(true/*ЭтаФорма.ПеречисленоНДФЛПоФизлицам.Количество() + ЭтаФорма.ПеречисленоНДФЛВсего.Количество() > 0*/)
			{
				//СведенияОДоходахФизлицДополнительный.ВставитьКнопкуВПодменю(2, КнопкаПодменю, "Разделитель2",		ТипКнопкиКоманднойПанели.Разделитель);
				//СведенияОДоходахФизлицДополнительный.ВставитьКнопкуВПодменю(3, КнопкаПодменю, "ПеречисленоНДФЛ", 	ТипКнопкиКоманднойПанели.Действие, "Справочно о перечисленном НДФЛ", ДополнительныеДействия);
			}
		}

		public void ВыполнитьДополнительныеДействия(/*Кнопка, ЭтаФорма, ЭтотОбъект*/)
		{
			//ФормаПеречисленоНДФЛ = ЭтотОбъект.ПолучитьФорму("ФормаПеречисленоНДФЛ", ЭтаФорма);
			//ФормаПеречисленоНДФЛ.Открыть();
		}
	}
}
